java中List<E>的get(index)用法

来源:百度知道 编辑:UC知道 时间:2024/05/24 15:56:42
public void setTbEmailPop3Smtp(Integer Id ,int user) {

List<TbEmailPop3Smtp> listfind = daos.getDbFindDAO().findbytbemailpop3smtp(
"from TbEmailPop3Smtp a where a.tbUser="+user);
int i,j=listfind.size();
for(i=0;i<j;i++)
{TbEmailPop3Smtp invent = (TbEmailPop3Smtp) listfind.get(i);
if(invent.getPkid()==Id)
{
invent.setIsuse(1);
}else invent.setIsuse(0);
daos.getDbEditDAO().edit(invent);
System.out.print("shit");

}
我这段代码的意思大概是这样的,用一个for循环把List<TbEmailPop3Smtp>
中的数据和id比较,然后相等的吧其中一个属性Isuse设为1,其他的设为0
但是运行了结果好像不能改变,是不是get(i)不能这么用?其他的地方我确定没错……
是把pikid和id相等的object的一个属性isuse设为1
我吧System.out.print("shit");放在invent.setIsuse(1);上面可以读到

呵呵,忘了告诉大家乐,这个代码没错,是软件运行模式错了,重登就可以了

List<E>的get(index)拿出来的是List里面元素的reference,这点你用的没有错,调用这个reference的方法将直接作用到List里面的元素(实例)上去。
建议你step in调试这个方法,看看invent.setIsuse(1);有没有得到执行。

get(index)就是获取到List对象中下标为“index”的值。
解释:
List对象通过泛型的形式先定义一个对象类型,之后只需要通过add方法增加对象,之后通过get方法获取到对象的值的形式来灵活的实现参数传递。
举例:
List<E> list = new ArrayList<E>();//定义一个list的泛型

list.add((E)"StringBatch");//给list增加字符串对象,实际上已经强制转换为“E”类型
list.get(0);//获取到对象的第一个存储值。
备注:如果获取的”index“值不存在,就会报错数组越界,所以开发过程中一定多加注意。

用JDK1.5以后的那个for循环来搞不就行了,不用用到get方法

for(TbEmailPop3Smtp invent:listFind){
if(invent.getPkid()==Id)
{
invent.setIsuse(1);
}else invent.setIsuse(0);
daos.getDbEditDAO().edit(invent);
System.out.print("shit");
}
试一下这段看看

你调错对象了.

你set 的对象应该是listfind
而不是你新建的对象invent
............................
你可以读到是因为你那是访问的是invent